package gui;

import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class SoNumeroETamanhoMaximoComVirgula extends PlainDocument {

	/**
		 * 
		 */
	private static final long serialVersionUID = 1L;
	private JTextField txtJT = new JTextField();
	private int tamanho;

	public SoNumeroETamanhoMaximoComVirgula(JTextField txtJT, int tamanho) {
		super();
		this.txtJT = txtJT;
		this.tamanho = tamanho;
	}

	public void insertString(int offset, String str, AttributeSet attr)
			throws BadLocationException {
		// permite apenas uma virgula
		if (str.equals(".")) {
			if (txtJT.getText().indexOf(".") > -1)
				return;
			else {
				// super.insertString(offset, str, attr);
				if (str == null)
					return;

				String oldString = getText(0, getLength());
				String newString = oldString.substring(0, offset) + str
						+ oldString.substring(offset);

				if (newString.length() > tamanho) {
					super.insertString(offset, "", attr);
				} else {
					// Repassa para o pai.
					super.insertString(offset, str, attr);
				}
			}

		}
		if (str.codePointAt(0) < 48 || str.codePointAt(0) > 57)
			return;
		// super.insertString(offset, str, attr);
		if (str == null)
			return;

		String oldString = getText(0, getLength());
		String newString = oldString.substring(0, offset) + str
				+ oldString.substring(offset);

		if (newString.length() > tamanho) {
			super.insertString(offset, "", attr);
		} else {
			// Repassa para o pai.
			super.insertString(offset, str, attr);
		}
	}
}
